package com.yyh.fanxing;

import java.util.ArrayList;
import java.util.Scanner;

/*键盘录入学生信息，保存到集合中。
- 循环录入的方式，1：表示继续录入，0：表示结束录入。
- 定义学生类，属性为姓名，年龄，使用学生对象保存录入数据。
- 使用ArrayList集合，保存学生对象，录入结束后，用foreach遍历集合。
*/
public class Demo6 {
    public static void main(String[] args) {
        //创建ArrayList集合
        ArrayList<Student> list = new ArrayList<>();
        //创建键盘录入对象
        Scanner scanner = new Scanner(System.in);
        //循环录入学生信息
        System.out.println("=== 学生信息管理系统 ===");

        while (true) {
            System.out.print("选择(1、录入; 0、退出): ");
            String choice = scanner.nextLine().trim();

            if (choice.equals("0")) {
                System.out.println("录入结束，开始遍历学生信息...");
                break;
            } else if (choice.equals("1")) {
                // 录入学生信息
                System.out.print("姓名: ");
                String name = scanner.nextLine().trim();

                System.out.print("年龄: ");
                int age;
                try {
                    age = Integer.parseInt(scanner.nextLine().trim());
                } catch (NumberFormatException e) {
                    System.out.println("年龄输入错误，请重新输入！");
                    continue;
                }

                // 创建学生对象并添加到集合
                Student student = new Student(name, age);
                list.add(student);
                System.out.println("学生信息添加成功！");

            } else {
                System.out.println("输入错误，请输入 1 或 0！");
            }
        }

        // 使用foreach循环遍历集合
        System.out.println("\n=== 所有学生信息 ===");
        if (list.isEmpty()) {
            System.out.println("没有学生信息！");
        } else {
            for (Student student : list) {
                System.out.println(student);
            }
        }
    }
    // 学生类
    static class Student {
        //属性
        // 姓名
        private String name;
        // 年龄
        private int age;
        // 构造方法
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
        // getter 和 setter 方法
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
        // 重写toString方法
        @Override
        public String toString() {
            return "Student [" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ']';
        }
    }
}
